from zhipuai import ZhipuAI
import json
import requests
# 这个api是获取法人代表的名字（测试，不是正式开发）
client = ZhipuAI(api_key="8fb21e517a965b10cf87b7fdadf18a74.UVLbxTJXdL3YLxcT") # 请填写您自己的APIKey

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_company_info",
            "description": "根据提供的公司名称，查询该公司的全部信息。",
            "parameters": {
                "type": "object",
                "properties": {
                    "company_name": {
                        "type": "string",
                        "description": "公司名称",
                    }
                },
                "required": ["company_name"],
            },
        }
    }
]
# messgaes里面的content内容需要修改，我们只需要获取到公司名字，所以下面的代码可以删除，直接调用anaylize里面的方法获取公司名字（如果有的话）
messages = [
    {
        "role": "user",
        "content": "瑞丰光电的法定代表人是谁？"
    }
]
response = client.chat.completions.create(
    model="glm-4", # 填写需要调用的模型名称
    messages=messages,
    tools=tools,
    tool_choice="auto",
)
print(response.choices[0].message)

# 上面的代码用于获取公司的名字

# 下面的代码根据获得的公司名字和tools里面的api名称来获取公司全部的信息

function = response.choices[0].message.tool_calls[0].function
func_args = function.arguments
func_name = function.name
domain = "comm.chatglm.cn"
url = f"https://{domain}/law_api/{func_name}"

headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer DE32EB46D23350E0B75B3702C8D5DC036F8CE32DC73C919D'
}


rsp = requests.post(url, json=json.loads(func_args), headers=headers)
company_info = rsp.json()

# 提取法人代表信息
legal_representative = company_info.get('法人代表')
print(legal_representative)

messages = [
    {
        "role": "user",
        "content": "瑞丰光电的法定代表人是谁？"
    }
]
messages.append(response.choices[0].message.model_dump())
messages.append({
    "role": "tool",
    "content": f"{rsp.json()}",
    "tool_call_id": response.choices[0].message.tool_calls[0].id
})


ans=client.chat.completions.create(
    model="glm-4",  # 填写需要调用的模型名称
    messages=messages,
    tools=tools,
).choices[0].message

print(ans.content)
